Page({

    /**
     * 页面的初始数据
     */
    data: {
        dataList: [],
        selfList: [],
        gymId: '',
        "time": {},
        "sort": 0,
        "choseTime": '', //选择的日期
        "totalPeop": 4,
        "lowestPeople": 2,
        "currentPeople": 1,
        product: {
            "value": '',
            "options": [{
                value: '',
                label: ''
            }],
        },
    },

    //预约时间
    choseTime(e) {
        console.log(e)
        this.setData({
            choseTime: e.currentTarget.dataset.chosetime
        })
    },

    //下拉框选项的
    onChange(e) {
        this.setData({
            'product.value': e.detail.value,
        });

        // 当用户选择了一个 gymId 后发送请求
        if (e.detail.value !== '') {
            this.fetchData(e.detail.value);
        }
    },

    // tab改变的
    onTabsChange(event) {
        this.setData({
            sort: event.detail.value
        })
        console.log(`Change tab, tab-panel value is ${event.detail.value}.`);
    },
    //
    onTabsClick(event) {
        wx.request({
            url: 'http://localhost:8080/keep/elfishCourse/listToWx',
            method: 'GET',
            header: {
                'Authorization': getApp().globalData.authorization
            },
            success: (resp) => {
                console.log(resp.data.rows[0].fitnessGym.gymName)
                const gymNames = resp.data.rows.map(item => item.fitnessGym && item.fitnessGym.gymName || '未知健身房名称');
                const gymIds = resp.data.rows.map(item => item.fitnessGym && item.fitnessGym.id || '');

                console.log("selfList", resp.data.rows);
                console.log("gymNames", gymNames); // 打印出所有的 gymName

                // 设置 product.value 为第一个 gymId
                const initialValue = gymIds.length > 0 ? gymIds[0] : '';

                // 创建一个符合组件期望格式的 options 数组，并去除重复的 gymId
                const uniqueGymIds = [...new Set(gymIds)];
                const options = uniqueGymIds.map((id, index) => ({
                    value: id,
                    label: gymNames[gymIds.indexOf(id)] // 获取对应 gymId 的 gymName
                }));

                this.setData({
                    selfList: resp.data.rows,
                    'product.options': options, // 将 options 数组设置为 product.options 的值
                    'product.value': initialValue, // 设置 product.value 为第一个 gymId 或空字符串
                });

                console.log(options);
            }
        });
        console.log(`Click tab, tab-panel value is ${event.detail.value}.`);
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        if (options == null) {
            this.setData({
                time: getDates(7, getCurrentMonthFirst()),
                choseTime: getDates(7, getCurrentMonthFirst())[0].day,
            })
        } else {
            this.setData({
                sort: options.sort,
                time: getDates(7, getCurrentMonthFirst()),
                choseTime: getDates(7, getCurrentMonthFirst())[0].day,
            })
        }

        // 加载时发送请求获取全部数据
        this.fetchAllData();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        // 加载时发送请求获取全部数据
        this.fetchAllData();
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

    // 发送请求获取全部数据
    fetchAllData() {
        wx.request({
            url: 'http://localhost:8080/keep/teamClass/listToWx',
            method: 'GET',
            header: {
                'Authorization': getApp().globalData.authorization
            },
            success: (resp) => {
                console.log(resp)
                const gymNames = resp.data.rows.map(item => item.fitnessGym.gymName);
                const gymIds = resp.data.rows.map(item => item.fitnessGym.id);

                console.log("dataList", resp.data.rows);
                console.log("gymNames", gymNames); // 打印出所有的 gymName

                // 设置 product.value 为第一个 gymId
                const initialValue = gymIds.length > 0 ? gymIds[0] : '';

                // 创建一个符合组件期望格式的 options 数组，并去除重复的 gymId
                const uniqueGymIds = [...new Set(gymIds)];
                const options = uniqueGymIds.map((id, index) => ({
                    value: id,
                    label: gymNames[gymIds.indexOf(id)] // 获取对应 gymId 的 gymName
                }));

                this.setData({
                    dataList: resp.data.rows,
                    'product.options': options, // 将 options 数组设置为 product.options 的值
                    'product.value': initialValue, // 设置 product.value 为第一个 gymId 或空字符串
                });

                console.log(options);
            }
        });

        // wx.request({
        //   url: 'http://localhost:8080/keep/elfishCourse/listToWx',
        //   method: 'GET',
        //   header: {
        //     'Authorization': getApp().globalData.authorization
        //   },
        //   success: (resp) => {
        //     const gymNames = resp.data.rows.map(item => item.fitnessGym.gymName);
        //     const gymIds = resp.data.rows.map(item => item.fitnessGym.id);

        //     console.log("selfList", resp.data.rows);
        //     console.log("gymNames", gymNames); // 打印出所有的 gymName

        //     // 设置 product.value 为第一个 gymId
        //     const initialValue = gymIds.length > 0 ? gymIds[0] : '';

        //     // 创建一个符合组件期望格式的 options 数组，并去除重复的 gymId
        //     const uniqueGymIds = [...new Set(gymIds)];
        //     const options = uniqueGymIds.map((id, index) => ({
        //       value: id,
        //       label: gymNames[gymIds.indexOf(id)] // 获取对应 gymId 的 gymName
        //     }));

        //     this.setData({
        //       selfList: resp.data.rows,
        //       'product.options': options, // 将 options 数组设置为 product.options 的值
        //       'product.value': initialValue, // 设置 product.value 为第一个 gymId 或空字符串
        //     });

        //     console.log(options);
        //   }
        // });
    },

    // 发送请求获取特定 gymId 的数据
    fetchData(gymId) {
        wx.request({
            url: `http://localhost:8080/keep/teamClass/list?gymId=${this.data.product.value}`,
            method: 'GET',
            header: {
                'Authorization': getApp().globalData.authorization
            },
            success: (resp) => {
                this.setData({
                    dataList: resp.data.rows,
                });
            }
        });

        wx.request({
            url: `http://localhost:8080/keep/elfishCourse/list?gymId=${this.data.product.value}`,
            method: 'GET',
            header: {
                'Authorization': getApp().globalData.authorization
            },
            success: (resp) => {
                this.setData({
                    selfList: resp.data.rows,
                });
            }
        });
    }
});

//获取当前时间
function getCurrentMonthFirst() {
    var date = new Date();
    var todate = date.getFullYear() + "-" + ((date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : date.getMonth() + 1) + "-" + (date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate());
    return todate;
}

function dateLater(dates, later) {
    let dateObj = {};
    let show_day = new Array('周日', '周一', '周二', '周三', '周四', '周五', '周六');
    let date = new Date(dates);
    date.setDate(date.getDate() + later);
    let day = date.getDay();
    dateObj.year = date.getFullYear();
    dateObj.month = ((date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : date.getMonth() + 1);
    dateObj.day = (date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate());
    dateObj.week = show_day[day];
    return dateObj;
}

function getDates(days, todate = getCurrentMonthFirst()) { //todate默认参数是当前日期，可以传入对应时间
    var dateArry = [];
    for (var i = 0; i < days; i++) {
        var dateObj = dateLater(todate, i);
        dateArry.push(dateObj)
    }
    return dateArry;
}